/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * TestandoVencedores.java
 *
 * Created on 25/05/2011, 13:43:13
 */

package br.com.comprasPublicas.view.cadastro;

import br.com.comprasPublicas.entity.Cotacao;
import br.com.comprasPublicas.entity.InclusaoPrecosCotacao;
import br.com.comprasPublicas.util.HibernateUtil;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import org.hibernate.Criteria;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;

/**
 *
 * @author helsen
 */
public class TestandoVencedores extends javax.swing.JFrame {

    /** Creates new form TestandoVencedores */
    public TestandoVencedores() {
        initComponents();

        preencher_tblProduto();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jScrollPane2 = new javax.swing.JScrollPane();
        tblProduto = new javax.swing.JTable();
        txtCotacao = new javax.swing.JTextField();
        jLabel1 = new javax.swing.JLabel();

        setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
        setName("Form"); // NOI18N

        jScrollPane2.setName("jScrollPane2"); // NOI18N

        tblProduto.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {

            },
            new String [] {
                "Cod.", "Produto", "Fornecedor", "Quantidade", "Unid.", "Valor Unit.", "Valor Total"
            }
        ));
        tblProduto.setAutoResizeMode(javax.swing.JTable.AUTO_RESIZE_ALL_COLUMNS);
        tblProduto.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
        tblProduto.setName("tblProduto"); // NOI18N
        tblProduto.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_INTERVAL_SELECTION);
        tblProduto.getTableHeader().setResizingAllowed(false);
        tblProduto.getTableHeader().setReorderingAllowed(false);
        tblProduto.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                tblProdutoMouseClicked(evt);
            }
        });
        tblProduto.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusLost(java.awt.event.FocusEvent evt) {
                tblProdutoFocusLost(evt);
            }
        });
        jScrollPane2.setViewportView(tblProduto);

        org.jdesktop.application.ResourceMap resourceMap = org.jdesktop.application.Application.getInstance(br.com.comprasPublicas.compraspublicas.ComprasPublicasApp.class).getContext().getResourceMap(TestandoVencedores.class);
        txtCotacao.setText(resourceMap.getString("txtCotacao.text")); // NOI18N
        txtCotacao.setName("txtCotacao"); // NOI18N
        txtCotacao.addFocusListener(new java.awt.event.FocusAdapter() {
            public void focusLost(java.awt.event.FocusEvent evt) {
                txtCotacaoFocusLost(evt);
            }
        });

        jLabel1.setText(resourceMap.getString("jLabel1.text")); // NOI18N
        jLabel1.setName("jLabel1"); // NOI18N

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(jScrollPane2, javax.swing.GroupLayout.DEFAULT_SIZE, 942, Short.MAX_VALUE)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jLabel1)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(txtCotacao, javax.swing.GroupLayout.PREFERRED_SIZE, 54, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(txtCotacao, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 50, Short.MAX_VALUE)
                .addComponent(jScrollPane2, javax.swing.GroupLayout.PREFERRED_SIZE, 219, javax.swing.GroupLayout.PREFERRED_SIZE))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void tblProdutoMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_tblProdutoMouseClicked

    }//GEN-LAST:event_tblProdutoMouseClicked

    private void tblProdutoFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_tblProdutoFocusLost

}//GEN-LAST:event_tblProdutoFocusLost

    private void txtCotacaoFocusLost(java.awt.event.FocusEvent evt) {//GEN-FIRST:event_txtCotacaoFocusLost
        cotacao = new Cotacao();

        List<Cotacao> lista = new ArrayList();
        lista = lista_cotacao();
        int tamanho_lista = lista.size();
        if (tamanho_lista != 0){
            for(int i = 0; i < tamanho_lista;i++)
            {
                cotacao = lista.get(i);
            }
        }
        preenche_tblItens();

    }//GEN-LAST:event_txtCotacaoFocusLost

    /**
    * @param args the command line arguments
    */
    public static void main(String args[]) {
        java.awt.EventQueue.invokeLater(new Runnable() {
            public void run() {
                new TestandoVencedores().setVisible(true);
            }
        });
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JLabel jLabel1;
    private javax.swing.JScrollPane jScrollPane2;
    private javax.swing.JTable tblProduto;
    private javax.swing.JTextField txtCotacao;
    // End of variables declaration//GEN-END:variables

    public void preencher_tblProduto()
    {
        tblProduto.getColumnModel().getColumn(0).setPreferredWidth(1);
        tblProduto.getColumnModel().getColumn(1).setPreferredWidth(250);
        tblProduto.getColumnModel().getColumn(2).setPreferredWidth(1);
        tblProduto.getColumnModel().getColumn(3).setPreferredWidth(5);
        tblProduto.getColumnModel().getColumn(4).setPreferredWidth(5);
        tblProduto.getColumnModel().getColumn(5).setPreferredWidth(5);
        tblProduto.getColumnModel().getColumn(6).setPreferredWidth(15);
    }

    private List<Cotacao> lista_cotacao() {
        Session sessao = HibernateUtil.getSessao();
        Transaction transacao = sessao.beginTransaction();
        Query query = sessao.createQuery("from Cotacao where id_cotacao = :id_cot");
        query.setString("id_cot", txtCotacao.getText());

        List cotacaoList = query.list();

        if(cotacaoList.isEmpty()){
            txtCotacao.setText("");
            JOptionPane.showMessageDialog(null, "Não existe esta Cotação!");
        }
        transacao.commit();
        sessao.close();
        return cotacaoList;
    }

    private void preenche_tblItens() {
        Session sessao = HibernateUtil.getSessao();
        Transaction transacao = sessao.beginTransaction();

        //Utilizando criteria para instanciar ItemPedido.class
        Criteria crit = sessao.createCriteria(InclusaoPrecosCotacao.class);
        Cotacao cotacaoBusca = cotacao;


        //Buscando conforme restrição
        crit.add(Restrictions.like("cotacao", cotacaoBusca));
        crit.add(Restrictions.like("vencedor", "s"));
        List lista2 = crit.list();

        InclusaoPrecosCotacao inclusaoPrecosCotacao = new InclusaoPrecosCotacao();

        DefaultTableModel modelo_tblProdutos = (DefaultTableModel) tblProduto.getModel();
        modelo_tblProdutos.setNumRows(0);

        //Preechendo a tabela de Produtos
        int tamanho_lista = lista2.size();
        for (int i=0; i<tamanho_lista; i++)
        {
            inclusaoPrecosCotacao = (InclusaoPrecosCotacao) lista2.get(i);
            modelo_tblProdutos.addRow(new Object[]{inclusaoPrecosCotacao.getItem_pedido().getProduto().getId_produto(),
                                           inclusaoPrecosCotacao.getItem_pedido().getProduto().getNome(),
                                           inclusaoPrecosCotacao.getPessoa().getId_pessoa(),
                                           inclusaoPrecosCotacao.getItem_pedido().getQuantidade(),
                                           inclusaoPrecosCotacao.getItem_pedido().getUnidade(),
                                           inclusaoPrecosCotacao.getValor_unitario(),
                                           inclusaoPrecosCotacao.getValor_total()
                                            });
        }
        transacao.commit();
        sessao.close();
    }

    private Cotacao cotacao;
}
